#include<string>
#include<fstream>
#include<sstream>
#include<iostream>
#include<algorithm>
#include<iterator>
#include<vector>
#include<map>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include "cmd.hpp"
#include "log.hpp"
#include "def.hpp"
#include "metamodel.hpp"

using namespace std;
using namespace Puza;

int main(int argc, char* argv[]){
  /* Definitions */
  ModelFunc Model;
  
  // first parse command line
  PuzaCMD::Instance()->parseCMD(argc, argv);

  /* start log */
  PuzaLogger::Instance()->Start();

  /* Get the model */
  Model =  getModel();

  (*Model)(); // run model

  /* end log */
  PuzaLogger::Instance()->End();

  return 0;
}
